package com.java.yz.day09.ketang;

/*
    成员内部的常见修饰符
        private 为了保证数据的安全性
        static 为了让数据访问更方便
     被静态修饰的成员内部类只能访问外部类的静态成员
     内部类被静态修饰后的方法
        静态方法
        非静态方法
 */
class Out1{
    int a=1;
    private class In1{
        public void f1(){
            System.out.println("学习");
        }
    }
    //这样外界就不好访问 ，我们就可以定义一个公共的方法
    public void f2(){
        In1 in1 = new In1();
        in1.f1();
    }
    static class In11{
        public static void f11(){
            System.out.println("向上");
        }
        public void f111(){
            System.out.println("无畏");
        }
    }
}
/*
    1:非静态的成员内部类，成员只能是非静态的。
    2:内部类被静态修饰后的方法有静态和非静态之分。他们的访问和不用静态是不一样的。
    访问非静态方法：外部类名.内部类名 对象名 = new 外部类名.内部类名();
    访问静态方法：上面创建的对象访问，或者外部类名.内部类名.方法名();
 */
public class InnerClassDemo2 {
    public static void main(String[] args) {
        Out1 out1 = new Out1();
        out1.f2();
        Out1.In11.f11();  //访问静态方法: 外部类名.内部类名.方法名();
        Out1.In11 oi=new Out1.In11();  //静态只能访问静态的
        oi.f111();   //非静态只能访问非静态的
    }
}
